package entity;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table
public class Aluno implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column
    private int id_aluno;
    @Column
    private String nome;
    @Column
    private String matricula;
    @Column
    private String cpf;
    @Column
    private String rg;
    @Column
    private String telefone_principal;
    @Column
    private String telefone_celular;
    @Column
    private String email;
    @Column
    private String endereco;
    @ManyToMany(targetEntity=Curso.class)
    @JoinColumn(name="id_curso")
    private Curso curso;
    @ManyToOne(targetEntity=ContratoEstagio.class)
    @JoinColumn(name="id_estagio")
    private ContratoEstagio contratoEstagio;
        
    public ContratoEstagio getContratoEstagio() {
        return contratoEstagio;
    }

    public void setContratoEstagio(ContratoEstagio contratoEstagio) {
        this.contratoEstagio = contratoEstagio;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public int getId_aluno() {
        return id_aluno;
    }

    public void setId_aluno(int id_aluno) {
        this.id_aluno = id_aluno;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getTelefone_celular() {
        return telefone_celular;
    }

    public void setTelefone_celular(String telefone_celular) {
        this.telefone_celular = telefone_celular;
    }

    public String getTelefone_principal() {
        return telefone_principal;
    }

    public void setTelefone_principal(String telefone_principal) {
        this.telefone_principal = telefone_principal;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Aluno other = (Aluno) obj;
        if (this.id_aluno != other.id_aluno) {
            return false;
        }
        if ((this.nome == null) ? (other.nome != null) : !this.nome.equals(other.nome)) {
            return false;
        }
        if ((this.matricula == null) ? (other.matricula != null) : !this.matricula.equals(other.matricula)) {
            return false;
        }
        if ((this.cpf == null) ? (other.cpf != null) : !this.cpf.equals(other.cpf)) {
            return false;
        }
        if ((this.rg == null) ? (other.rg != null) : !this.rg.equals(other.rg)) {
            return false;
        }
        if ((this.telefone_principal == null) ? (other.telefone_principal != null) : !this.telefone_principal.equals(other.telefone_principal)) {
            return false;
        }
        if ((this.telefone_celular == null) ? (other.telefone_celular != null) : !this.telefone_celular.equals(other.telefone_celular)) {
            return false;
        }
        if ((this.email == null) ? (other.email != null) : !this.email.equals(other.email)) {
            return false;
        }
        if ((this.endereco == null) ? (other.endereco != null) : !this.endereco.equals(other.endereco)) {
            return false;
        }
        if (this.curso != other.curso && (this.curso == null || !this.curso.equals(other.curso))) {
            return false;
        }
        if (this.contratoEstagio != other.contratoEstagio && (this.contratoEstagio == null || !this.contratoEstagio.equals(other.contratoEstagio))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 17 * hash + this.id_aluno;
        hash = 17 * hash + (this.nome != null ? this.nome.hashCode() : 0);
        hash = 17 * hash + (this.matricula != null ? this.matricula.hashCode() : 0);
        hash = 17 * hash + (this.cpf != null ? this.cpf.hashCode() : 0);
        hash = 17 * hash + (this.rg != null ? this.rg.hashCode() : 0);
        hash = 17 * hash + (this.telefone_principal != null ? this.telefone_principal.hashCode() : 0);
        hash = 17 * hash + (this.telefone_celular != null ? this.telefone_celular.hashCode() : 0);
        hash = 17 * hash + (this.email != null ? this.email.hashCode() : 0);
        hash = 17 * hash + (this.endereco != null ? this.endereco.hashCode() : 0);
        hash = 17 * hash + (this.curso != null ? this.curso.hashCode() : 0);
        hash = 17 * hash + (this.contratoEstagio != null ? this.contratoEstagio.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Aluno{" + "id_aluno=" + id_aluno + "nome=" + nome + "matricula=" + matricula + "cpf=" + cpf + "rg=" + rg + "telefone_principal=" + telefone_principal + "telefone_celular=" + telefone_celular + "email=" + email + "endereco=" + endereco + "curso=" + curso + "contratoEstagio=" + contratoEstagio + '}';
    }
}
